/**
 * 过滤数组: 使用 Set O(1) + filter O(n) 方法
 * 时间复杂度: O(n)，其中 n 是数组的长度
 * 空间复杂度: O(m)，其中 m 是目标标题的数量
 *
 * 备注: Array.from 方法 是JS引擎优化的方法 ，可以直接生成数组，避免了手动循环的性能损失。
 */

// 1. 待匹配的标题集合（转成 Set，关键优化！）
const targetTitles = new Set([
  '皓龙长空',
  '红尘千载情悠悠',
  '花开染墨痕',
  '欢喜俏冤家',
  '皇帝变皇弟',
  '姐姐',
  '巾帼武圣',
  '穿越有方，皇帝爱上我',
  '此恨不关风与月',
  '不凡',
  '我的隐藏身份',
  '错付情人',
  '本尊在此',
  '八岁小医仙',
  '爱，如约而至',
]);

// 2. 你的原始对象数组（替换成实际数据）
const fillArray = Array.from({ length: 10085 }, (_, index) => {
  return {
    title: `无关标题${index + 1}`,
    id: index + 1,
  };
});
const fillArrayEnd = Array.from({ length: 200000 }, (_, index) => {
  return {
    title: `无关标题${index + 10096}`,
    id: index + 10096,
  };
});
const originalArray = [
  ...fillArray,
  { title: '花开染墨痕', id: 10086 },
  { title: '皓龙长空', id: 10089 },
  { title: '八岁小医仙', id: 10090 },
  { title: '爱，如约而至', id: 10091 },
  { title: '此恨不关风与月', id: 10092 },
  { title: '不凡', id: 10093 },
  ...fillArrayEnd,
  { title: '我的隐藏身份', id: 10094 },
  { title: '错付情人', id: 10095 },
  { title: '本尊在此', id: 10096 },
];
const startTime = Date.now();
const filteredArray = originalArray.filter((item) => targetTitles.has(item.title));
console.log('时间（毫秒）', Date.now() - startTime);
console.log(filteredArray);
